Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SPIKE]: [DRGO-1289] Ramin/add isolate #348

Open
wants to merge 18 commits into
base: master
Choose a base branch
from

Conversation

ramin-deriv
Copy link
Contributor

@ramin-deriv ramin-deriv commented Oct 21, 2024

The idea was to either move the entire WebSocket connection, including its JSON deserialization, or just the JSON deserialization to a separate isolate to make the app faster and improve its performance.

In the POC PR, we went with moving the entire connection to the isolate. However, since isolates cannot share memory with the app’s main isolate, messages have to be sent back and forth. We should note that If messages are sent and received often, this creates overhead and doesn’t improve performance. And, sending raw JSON data to the isolate for deserialization, creating Dart models there, and then sending them back to the main isolate (a two-way process for small JSONs) didn't seem to practical.

In the PR, we moved the entire WebSocket connection to the isolate. The WebSocket connection is set up there, and an instance of BinaryApi from flutter-deriv-api is created inside the isolate. This instance handles communication with the backend WebSocket server.

API requests are sent to the isolate using the message-passing system through the isolate’s port. The isolate sends these requests to the WebSocket channel. When a response is received, it creates a Dart model from the raw JSON and sends it back to the caller in the main isolate.

Setup for testing and performance comparison:

Maestro is used to create a sample automated test that opens the app, navigates to some pages, and scrolls the chart.

Flashlight is used to iterate the automation tests written by Maestro for some numbers (more tests -> more data -> more accurate results) and gives a score along with CPU, RAM usage, and average FPS.

We run these on both the current implementation and on the POC build and compare the scores and other metrics of the Flashlight report

@ramin-deriv ramin-deriv changed the title [SPIKE]: Ramin/add isolate [SPIKE]: [DRGO-1289] Ramin/add isolate Oct 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant